package farmers.other;

import org.junit.Test;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;

public class BigDecimalUtil {
    public static void main(String[] args) {
        BigDecimal dataNum = new BigDecimal(100);
        BigDecimal total = new BigDecimal(45660);
        System.out.println(dataNum.divide(total, 2, RoundingMode.HALF_UP));
        System.out.println(dataNum.divide(total, 4, RoundingMode.HALF_UP));
        System.out.println(new BigDecimal(200).multiply(new BigDecimal(33.33)).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).toString());


        String str = "123,456,789,012";
        System.out.println(str.contains("123"));
        System.out.println(str.contains("345"));



    }


    // 保留两位小数
    @Test
    public void test1 (){
        DecimalFormat df1 = new DecimalFormat("#0.00");
        DecimalFormat df2 = new DecimalFormat("##.00");
        DecimalFormat df3 = new DecimalFormat("00.00");
        DecimalFormat df4 = new DecimalFormat("##.##");

        System.out.println(df1.format(new BigDecimal(456.1)));
        System.out.println(df2.format(new BigDecimal(456.1)));
        System.out.println(df3.format(new BigDecimal(456.1)));
        System.out.println(df4.format(new BigDecimal(456.1)));

//        通过上图可以看到，#在补位时，如果该位没有数字会补空，如果是0.123这样的整数位为0的数字，则会丢失整数位；
//        0在补位时，如果该位没有数字会补0，所以整数位切勿用00.这样的表达式，造成最左侧存在多余0。
//        推荐：在保留小数位上，#0.00这种类型比较适宜。
    }
}
